Openclaw 与小度(百度)智能音箱的集成方案

463 字

如何用openclaw和智能家居集成,比如和小度音箱进行集成,能实现哪些功能?
下面给您一份 OpenClaw 与小度(百度)智能音箱的集成方案,包括实现思路、可落地功能、所需前置工作以及示例代码片段,帮助您快速把 OpenClaw 变成可以通过语音交互的机器人。
1️⃣ 前置准备
步骤
操作
说明
1. 注册百度开放平台账号
https://developer.baidu.com/ → 创建“智能音箱(DuerOS)”应用。
获得 app_key、app_secret、device_sn(设备序列号)等凭证。
2. 开通 DuerOS 语音能力
在控制台启用 “语音交互”“自定义技能”。
如需自定义指令,需要 Skill(技能) 开发权限。
3. 为 OpenClaw 安装/配置 DuerOS 插件
在 OpenClaw 工作区根目录下执行:
clawhub install dueros(或 npm i @openclaw/dueros)
随后在 ~/.openclaw/config/dueros.yml 中填入上一步得到的凭证。
插件会在后台维持与小度音箱的长链接(WebSocket)并把语音指令转为 OpenClaw 标准消息。
4. 配置 OpenClaw 与本地家居设备
通过已有的 Home Assistant、Tuya、米家 插件或自研 REST/ MQTT 接口把灯光、窗帘、空调等设备暴露给 OpenClaw。
确保 OpenClaw 能在本地网络上控制这些设备(如 homeassistant、tuya 插件)。
5. 定义 “Skill”(意图)
在 ~/.openclaw/skills/dueros-home 目录下创建 意图映射文件(intent.yml),把用户的语音意图映射到 OpenClaw 的工具调用。
示例见下文的 intent.yml 与 handler.js。
2️⃣ 可实现的典型功能
场景
语音指令示例
对应 OpenClaw 行动
灯光控制
“小度,客厅灯打开”“小度,关闭卧室灯”
调用 homeassistant 或 tuya 插件的 turn_on/turn_off
温度调节
“小度,把空调设定到 24 度”“小度,打开暖气”
调用 homeassistant 的 climate.set_temperature
窗帘/百叶
“小度,拉开客厅窗帘”“小度,关闭厨房百叶”
调用 tuya/homeassistant 的 cover.open_cover
音乐播放
“小度,播放《平凡之路》”“小度,暂停音乐”
调用本地音频播放器(mpv、vlc)或 网易云/QQ 音乐 API
查询天气
“小度,今天北京天气怎么样?”
调用 weather skill(已集成)返回天气信息
1/2

只要 OpenClaw 能调用相应的 tool(比如 exec、homeassistant、tuya),对应的意图就可以在语音层面实现。
3️⃣ 示例项目结构
~/.openclaw/

├─ skills/
│ └─ dueros-home/
│ ├─ intent.yml # DuerOS 意图映射
│ ├─ handler.js # 业务处理代码(Node.js/TS)
│ └─ README.md

├─ config/
│ └─ dueros.yml # DuerOS 连接凭证

└─ workspace/
└─ … # 您的其他文件
3.1 dueros.yml(仅示例,实际请填入真实值)
dueros:
app_key: "YOUR_APP_KEY"
app_secret: "YOUR_APP_SECRET"
device_sn: "YOUR_DEVICE_SN"
# 可选:服务器地址(默认使用 DuerOS 官方 WS)
ws_url: "wss://dueros.baidu.com/gateway"
3.2 intent.yml(把 DuerOS 意图映射到 OpenClaw 指令)
intents:
TurnOnLight:
utterances:
- "打开{room}灯"
- "把{room}灯打开"
slots:
room: "Room"
action: "homeassistant.turn_on"
parameters:
entity_id: "light.{room}_light"

TurnOffLight:
utterances:
- "关闭{room}灯"
- "把{room}灯关掉"
slots:
room: "Room"
action: "homeassistant.turn_off"
parameters:
entity_id: "light.{room}_light"

SetTemperature:
utterances:
- "把空调设定到{temp}度"
- "将温度调到{temp}度"
slots:
temp: "Number"
action: "homeassistant.set_temperature"
parameters:
entity_id: "climate.living_room"
temperature: "{temp}"
3.3 handler.js(业务层,使用 OpenClaw 内置 exec 或 homeassistant 插件)
module.exports = async (intent, slots, context) => {
const { action, parameters } = intent;

// 调用 OpenClaw 的内部工具
const result = await context.runTool(action, parameters);
// 返回给 DuerOS 的语音回复
return {
speech: result.success
? 已完成 ${intent.name}。
: 抱歉,执行失败:${result.error || '未知错误'},
shouldEndSession: false
};
};
context.runTool 是 OpenClaw 提供的内部调用方式,能够直接触发已注册的工具(如 homeassistant.turn_on)。
4️⃣ 部署与运行
启动 OpenClaw
加载 dueros 插件(如果之前未安装)
编辑 dueros.yml(填入凭证)后重启插件:
在百度智能音箱 App 中绑定 设备 SN(device_sn),并打开 技能 → 自定义技能 → 上线(上线后即可在小度上说出指令)。
调试:在 OpenClaw 的日志(openclaw logs)中可以看到收到的意图、参数和执行结果。
5️⃣ 常见问题 & 调试技巧
问题
可能原因
解决方案
小度听不懂指令
意图 utterances 与用户说的话不匹配
在 intent.yml 中添加更多同义句;打开 同义词 功能。
调用 Home Assistant 失败
homeassistant.yml 中的 api_token 或 url 不正确
使用 curl -H "Authorization: Bearer " http://:8123/api/states 测试连通性。
语音反馈迟缓或没有返回
OpenClaw 插件运行异常、日志报错
openclaw logs dueros 查看错误;确保网络能访问百度的 WebSocket 服务器。
设备未响应
设备 entity_id 错误或设备离线
在 Home Assistant 前端确认 entity_id(例如 light.living_room_light)。
多用户冲突
不同用户使用同一个 device_sn,指令相互覆盖
给每个家庭成员创建独立的 设备 SN(或在意图里加 user 槽位),在 handler.js 中区分。
6️⃣ 扩展思路(可选)
扩展方向
示例
场景化联动
“小度,回家模式” → 触发一系列指令(开灯、打开空调、播放音乐)。
语音提醒
小度主动推送“今天 9:00 有会议”或“天气将有雨,请记得带伞”。
多语言/方言
使用 DuerOS 的 方言模型,支持普通话、粤语、四川话等。
第三方云服务
调用 OpenAI/GPT 生成对话或新闻摘要,再通过音箱播报。
本地离线识别
在本地部署 Edge‑TTS 或 离线语音识别,实现无网络的简单指令。
小结
步骤:注册 DuerOS → 安装 OpenClaw dueros 插件 → 配置凭证 → 编写意图映射 → 绑定音箱 → 调试。
可实现:灯光、空调、窗帘、音乐、天气、日程、状态查询、脚本执行等 全屋智能 控制。
扩展:可进一步结合 Home Assistant、Tuya、IFTTT 等生态,实现更丰富的自动化场景。
如果您已经准备好 app_key、app_secret、device_sn,可以把它们发给我,我将帮助您快速完成 dueros.yml 配置并验证连接;或者如果您想先尝试本地控制(比如只用 exec 调用灯光脚本),也可以告诉我具体需求,我会提供对应的示例命令。祝您玩得开心,智能家居更便利!